<?php
/**
 * User:于小涛
 * Date:2020/2/17
 * Time:13:47
 */
namespace app\admin\business\rbac;

use think\facade\Db;

class Rbac{

    /**
     * 获取所有权限树形结构
     * @param int $int_pid 权限的pid
     * @param array $arr_auth_ids 查询哪些指定id的权限，如果是超级管理员则为0，如果是系统管理员则为1
     * @param array $arr_auth 查询结果
     * @param array $arr_exclude_auth_id 需要排除的权限
     * @param bool $bool_only_menu 是否只获取菜单，如果是则不会获取页面上的操作权限
     * @param array $arr_checked_auth_ids 当前角色已经绑定的权限
     * @return null
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
//    public static function getAllMenuTree($int_pid=0,$arr_auth_ids=array(),&$arr_auth=array(),$arr_exclude_auth_id=array(),$bool_only_menu=true,$arr_checked_auth_ids=array()){
//        //首先获取顶级的全部由权限的菜单
//        $str_where="pid={$int_pid} and is_lock=1 ";
//        //如果不为空，标识为普通管理员，则获取当前权限内所有开启的权限
//        if(is_array($arr_auth_ids)){
//            if(empty($arr_auth_ids)){
//                $arr_auth=array();
//                return ;
//            }
//            $str_auth_ids=implode(',',$arr_auth_ids);
//            $str_where.=" and id in({$str_auth_ids})";
//        }
//        $arr_re=Db::table('rbac_auth')->where($str_where)->order('order_num','desc')->select()->toArray();
//        if(empty($arr_re)){
//            return '';
//        }
//        $arr_auth=$arr_re;
//        foreach($arr_auth as $int_id=>&$arr_item){
//            //如果需要排除
//            if(in_array($arr_item['id'],$arr_exclude_auth_id)){
//                unset($arr_auth[$int_id]);
//                continue;
//            }
//            if(in_array($arr_item['id'],$arr_checked_auth_ids)){
//                $arr_item['checked']=true;
//            }
//            $arr_item['child']=array();
//            //url地址不为空，并且不是3级权限的不要，因为如果是一级或者二级权限有url地址则是不需要添加子集菜单的，然后4级菜单本身就不能够添加子集菜单
//            if(!empty($arr_item['url'])&&$arr_item['level']>3&&$bool_only_menu){
//                unset($arr_auth[$int_id]);
//                continue;
//            }
//            //为空或者不为空并且要求获取页面操作权限才继续获取子级
//            if(empty($arr_item['url'])){
//                self::getAllMenuTree($arr_item['id'],$arr_auth_ids,$arr_item['child'],$arr_exclude_auth_id,$bool_only_menu,$arr_checked_auth_ids);
//            }elseif(!$bool_only_menu){
//                self::getAllMenuTree($arr_item['id'],$arr_auth_ids,$arr_item['child'],$arr_exclude_auth_id,$bool_only_menu,$arr_checked_auth_ids);
//            }
//            if(empty($arr_item['child'])){
//                unset($arr_item['child']);
//            }
//        }
//        return '';
//    }
}